//680. 验证回文串 II
//思路：要求最多可以删除一个字符，保证字符串是回文串
//1.遍历整个数组，左右两边同时开始
//2.当左边不等于右边时，我们再写一个判断函数
//此时，我们分情况讨论：i> 让左边走一步，右边位置不变
//                   ii> 让右边走一步，左边位置不变
//这样就算是删除了一个字符
//3.在判断函数中如果再存在不等于时，就返回false，要是遍历完剩下的都相同，就返回true

#include <stdbool.h>
#include <string.h>

bool judge(char* s, int i, int j){
    while (i < j)
    {
        if(s[i++] != s[j--])
            return false;
    }
    return true;
}
bool validPalindrome(char * s){
    for(int i = 0, j = strlen(s) - 1; i < j; i++, j--)
    {
        if(s[i] != s[j])
            return (judge(s, i+1, j) || judge(s, i, j-1));
    }
    return true;
}